ক্লাস (Class) এবং অবজেক্ট (Object) হলো C++ প্রোগ্রামিংয়ের অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) ধারণার দুটি প্রধান উপাদান।
ক্লাস হলো একটি টেমপ্লেট বা ব্লুপ্রিন্ট যা ডেটা এবং মেথড একত্রে সংরক্ষণ করে। এটি একটি ইউজার-ডিফাইন্ড ডেটা টাইপ, যা অবজেক্ট তৈরি করতে ব্যবহৃত হয়। ক্লাসের মধ্যে থাকা ডেটা ডেটা মেম্বার নামে পরিচিত এবং ফাংশনগুলো মেম্বার ফাংশন নামে পরিচিত। ক্লাসের মাধ্যমে একটি নতুন ডেটা টাইপ তৈরি করা হয়, যা বাস্তব জীবনের অবজেক্টকে প্রোগ্রামিংয়ে মডেল করতে সাহায্য করে।
অবজেক্ট হলো ক্লাসের একটি নির্দিষ্ট উদাহরণ (ইনস্ট্যান্স), যা ক্লাসে সংজ্ঞায়িত ডেটা এবং মেথড ব্যবহার করতে পারে। ক্লাসে সংজ্ঞায়িত গুণাবলি এবং আচরণের ভিত্তিতে অবজেক্ট তৈরি করা হয়। প্রতিটি অবজেক্টে ক্লাসের বৈশিষ্ট্যগুলো থাকে, কিন্তু তারা আলাদাভাবে সংরক্ষণ ও ব্যবহৃত হয়।
ধরা যাক, আমরা একটি Car
ক্লাস তৈরি করতে চাই, যা বিভিন্ন গাড়ির বৈশিষ্ট্য এবং ফাংশন সংরক্ষণ করবে।
#include <iostream>
using namespace std;
class Car {
public:
string brand; // ডেটা মেম্বার
int year; // ডেটা মেম্বার
// মেম্বার ফাংশন
void displayInfo() {
cout << "Brand: " << brand << ", Year: " << year << endl;
}
};
বর্ণনা:
Car
নামে একটি ক্লাস তৈরি করা হয়েছে, যা brand
এবং year
নামে দুটি ডেটা মেম্বার ধারণ করে।displayInfo()
নামে একটি মেম্বার ফাংশন রয়েছে, যা গাড়ির তথ্য প্রদর্শন করে।int main() {
Car car1; // Car ক্লাসের একটি অবজেক্ট তৈরি
car1.brand = "Toyota"; // car1 অবজেক্টের ডেটা মেম্বার সেট
car1.year = 2020;
Car car2; // Car ক্লাসের আরেকটি অবজেক্ট তৈরি
car2.brand = "Honda";
car2.year = 2019;
// অবজেক্টের মেম্বার ফাংশন কল
car1.displayInfo();
car2.displayInfo();
return 0;
}
আউটপুট:
Brand: Toyota, Year: 2020
Brand: Honda, Year: 2019
বর্ণনা:
car1
এবং car2
নামে দুটি অবজেক্ট তৈরি করা হয়েছে, যেগুলো Car
ক্লাসের ডেটা মেম্বার brand
এবং year
এর মান ধারণ করছে।displayInfo()
মেম্বার ফাংশন কল করা হয়েছে, যা তাদের গাড়ির ব্র্যান্ড এবং বছর প্রদর্শন করে।ক্লাসে তিন ধরনের অ্যাক্সেস স্পেসিফায়ার ব্যবহার করা হয়: public
, private
, এবং protected
। এগুলো নির্ধারণ করে ক্লাসের সদস্যদের অ্যাক্সেস লেভেল।
private
অ্যাক্সেস স্পেসিফায়ারclass Car {
private:
string brand; // private ডেটা মেম্বার
int year;
public:
void setInfo(string b, int y) {
brand = b;
year = y;
}
void displayInfo() {
cout << "Brand: " << brand << ", Year: " << year << endl;
}
};
বর্ণনা:
brand
এবং year
প্রাইভেট ডেটা মেম্বার, যা ক্লাসের বাইরে সরাসরি অ্যাক্সেসযোগ্য নয়।setInfo()
ফাংশন ব্যবহার করে brand
এবং year
সেট করা হয়েছে, এবং displayInfo()
ফাংশন ব্যবহার করে তথ্য প্রদর্শন করা হয়েছে।কন্সট্রাক্টর হলো একটি বিশেষ ফাংশন, যা অবজেক্ট তৈরি হওয়ার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি সাধারণত ক্লাসের ডেটা মেম্বার ইনিশিয়ালাইজ করতে ব্যবহৃত হয়। কন্সট্রাক্টরের নাম অবশ্যই ক্লাসের নামের মতো হতে হবে এবং এর কোনো রিটার্ন টাইপ থাকে না।
class Car {
public:
string brand;
int year;
Car(string b, int y) { // কন্সট্রাক্টর
brand = b;
year = y;
}
void displayInfo() {
cout << "Brand: " << brand << ", Year: " << year << endl;
}
};
ডেস্ট্রাক্টর একটি বিশেষ ফাংশন, যা অবজেক্ট ধ্বংস হওয়ার সময় স্বয়ংক্রিয়ভাবে কল হয়। এর নামও ক্লাসের নামের মতো হয়, তবে এর আগে ~
(টিল্ডা) চিহ্ন থাকে।
class Car {
public:
Car() {
cout << "Constructor called!" << endl;
}
~Car() {
cout << "Destructor called!" << endl;
}
};
১. কোড পুনঃব্যবহারযোগ্যতা: ক্লাস একবার তৈরি করলে একাধিক অবজেক্ট তৈরি করে সেটি পুনরায় ব্যবহার করা যায়। ২. ডেটা হাইডিং: প্রাইভেট মেম্বার ব্যবহার করে ডেটা গোপন রাখা যায়, যা ডেটা সুরক্ষিত রাখে। ৩. কোডের পঠনযোগ্যতা বৃদ্ধি: ক্লাসের সাহায্যে কোডকে সহজে পড়া যায় এবং সংগঠিত রাখা যায়। ৪. মডুলার প্রোগ্রামিং: বড় প্রোগ্রামকে ছোট ছোট অংশে ভাগ করা যায়, যা ডিবাগিং এবং মেইনটেনেন্সে সহায়ক।
ক্লাস এবং অবজেক্ট OOP ধারণায় প্রোগ্রামকে আরও কার্যকর এবং পুনঃব্যবহারযোগ্য করে তোলে, যা সফটওয়্যার ডেভেলপমেন্টে অত্যন্ত গুরুত্বপূর্ণ।
common.read_more